package xin.petstore.framework.utils;
import java.text.DecimalFormat;
import java.text.ParseException;

/**
 *  
 * <p>DecimalUtil.java</p> 
 * <p>Decimal Utility</p>
 * @author mxm
 * @version 1.0  Jul 20, 2011 10:00:00 AM
 */
public class DecimalUtil {
		
	private DecimalUtil(){}
	
	/**
	 * 初始金额格式
	 */
//	public static String MONEY_PATTERN = "#,##0.00#";
	public static String MONEY_PATTERN = "#,##0.00";
	
	
	/**
	 * 初始数字格式
	 */
//	public static String FLOAT_PATTERN = "#0.0########################";
	public static String FLOAT_PATTERN = "#,##0";
	public static String INT_PATTERN = "#0";

	/**
	 * 格式化金额(千分位)
	 * @param numStr
	 * @return 
	 * @author mengxm
	 */
	public static final double parseMoney(String numStr) {
		return parse(numStr, MONEY_PATTERN);
	}

	/**
	 * 格式化数字
	 * @param numStr
	 * @return 
	 * @author mengxm
	 */
	public static final double parseNumber(String numStr) {
		return parse(numStr, FLOAT_PATTERN);
	}
	
	/**
	 * 格式化
	 * @param numStr
	 * @param pattern 格式
	 * @return 
	 * @author mengxm
	 */
	public static final double parse(String numStr, String pattern) {
		double decimal = 0;
		try {
			DecimalFormat decFmt = new DecimalFormat(pattern);
			decimal = decFmt.parse(numStr).doubleValue();
		} catch (ParseException e) {
//			logger.error("parse(String) parse error", e);
		}
		return decimal;
	}
	/**
	 * 格式化金额(千分位)
	 * @param numStr
	 * @return 
	 * @author mengxm
	 */
	public static final String formatMoney(double decimal) {
		return format(decimal, MONEY_PATTERN);
	}

	/**
	 * 格式化数字
	 * @param numStr
	 * @return 
	 * @author mengxm
	 */
	public static final String formatNumber(double decimal) {
		return format(decimal, FLOAT_PATTERN);
	}
	
	/**
	 * 格式化金额
	 * @param numStr
	 * @param pattern 格式
	 * @return 
	 * @author mengxm
	 */	
	public static final String format(double decimal, String pattern) {
		DecimalFormat decFmt = new DecimalFormat(pattern);
		return decFmt.format(decimal);
	}
	
	/**
	 * 格式化金额无小数
	 * @param numStr
	 * @param pattern 格式
	 * @return 
	 * @author mengxm
	 */	
	public static final String formatToInt(double decimal) {
		return format(decimal, INT_PATTERN);
	}
	
//	public static void main(String[] args) {
//		System.out.println(DecimalUtil.formatToInt(1000.09));
//		
//	}
	
}